Pyenv を入れた後、”command not found” で Python がインストールできない時の対処
Guten Tag, ベルリンより伊藤です。
Pyenv を入れて意気揚々とPythonインストールしようとしたら、次のエラーで失敗しました。
$ pyenv install 3.8.2 /usr/local/bin/pyenv-install: line 53: python-build: command not found /usr/local/bin/pyenv-install: line 76: parse_options: command not found
このエラー事例を探しても見当たらなかったので、解決した方法をご紹介します。
環境
OS: MacOS Mojave 10.14.6
インストールまでにやったこと
Pyenvのインストール & 環境設定
pyenv のセットアップですが、複数の外部サイト(※)を参照した限り、だいたい同じだったので、次の方法で行いました。
※例えば: MacでPython使う時の最低限のメモ(pyenv編) - Qiita
- Pyenv をインストール
$ brew install pyenv
-
.bash_profile に環境設定を追加
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
-
変更を反映
$ source .bash_profile
参照した情報の限りでは、もうこの次にPythonインストールに進んでいるんですが、冒頭のエラーに引っかかり次に進めません。
状況確認
※参考に載せておきますが不要な方は読み飛ばしてください※
Pyenv自体が入っているのは確認できました。参照した情報は正しく設定できているようです。まだPyenvではPythonをインストールしていないので、Pythonは当然まだローカルのパスを参照しています。
$ pyenv -v pyenv 1.2.18 $ pyenv versions * system (set by /Users/mai/.pyenv/version) $ which pyenv /usr/local/bin/pyenv $ cat .bash_profile | grep -i pyenv export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" $ which python /usr/bin/python
PATHで通している場所には、ディレクトリのみが作成されていました。
$ ls -lR /Users/mai/.pyenv total 0 drwxr-xr-x 2 mai staff 64 May 7 13:29 shims drwxr-xr-x 2 mai staff 64 May 4 14:09 versions /Users/mai/.pyenv/shims: /Users/mai/.pyenv/versions:
which pyenv
のパスを追ってみるとこのようになっていました。この辺はこれで問題ないようでした。
$ ls -la /usr/local/bin/pyenv lrwxr-xr-x 1 mai admin 32 Apr 30 18:59 /usr/local/bin/pyenv -> ../Cellar/pyenv/1.2.18/bin/pyenv $ ls -la /usr/local/Cellar/pyenv/1.2.18/bin/pyenv lrwxr-xr-x 1 mai staff 16 Apr 2 21:32 /usr/local/Cellar/pyenv/1.2.18/bin/pyenv -> ../libexec/pyenv $ ls -la /usr/local/Cellar/pyenv/1.2.18/libexec/pyenv -rwxr-xr-x 1 mai staff 3308 Apr 30 18:59 /usr/local/Cellar/pyenv/1.2.18/libexec/pyenv
前提条件の再確認
参考にしたサイトでは触れられていませんでしたが、改めて公式のGitHubページを確認すると、「Basic GitHub Checkout」の手順3~5ができてなかったので、対応しました。
■ 3-4. pyenv init の追加 & 変更を反映
.bash_profile に既に eval "$(pyenv init -)"
が含まれていましたが、公式に従うよう、既存のを消して下記で追加し直しました:
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile $ exec "$SHELL"
■ 5. 依存するビルド環境の用意
Suggested build environment に従い、各種インストールします。
・Xcode Command Line Tools のインストール
$ xcode-select --install
・Homebrewで各種インストール(brew list
で既存のモジュールを確認し、ないものだけ指定)
$ brew install openssl readline sqlite3 xz zlib
で、ここまでやっても pyenv install
の結果は冒頭の通りで変わりませんでした。今回のエラーには意味なかったのかもしれませんが、推奨環境に整えたということで。
シンボリックリンクの再関連付け
手詰まりになり、社内の猛者チャンネルで上の状況を説明したところ、教えてもらった回答で治りました!
(教えていただき、ありがとうございました!!)
下記ディレクトリの中にpython-buildがありますか?
→ありました
/usr/local/Cellar/pyenv/1.2.18/bin/
もしあるのであれば、下記コマンドで再度関連づけてみてはいかがでしょうか?
→1つ追加で関連付けされたようです!
$ brew unlink pyenv && brew link pyenv Unlinking /usr/local/Cellar/pyenv/1.2.18... 3 symlinks removed Linking /usr/local/Cellar/pyenv/1.2.18... 4 symlinks created
そして、その後無事にエラーなくPythonインストールできるようになりました!
$ pyenv install 3.8.2 $ which python /Users/mai/.pyenv/shims/python $ pyenv global 3.8.2 $ pyenv versions system * 3.8.2 (set by /Users/mai/.pyenv/version) $ python -V Python 3.8.2
結果、brew unlink pyenv && brew link pyenv
でエラー解消に繋がりました。
猛者すごい...
原因はなんだったか分からないですが、実際には他の作業と並行してやっていたので何かが影響してしまったのかも...ググっても情報がなかったということは稀有な例なのかもしれませんが、トラブルシューティングにご参考くださいませ。
その後、virtualenv の入れ方・使い方は下記ブログを参考にしました!
anyenvからpyenv+virtualenvをインストールしてバージョンやパッケージを切替可能なPython環境を用意する
おまけ:Pyenv を入れるにあたり既存の Python を消すべき?
ちなみに、Pyenv を入れるまでは、ローカルの Python 2.7 を使っていたのですが、2.7 は廃止するということで Python 3.8 も入れたところでした。この時に気持ち悪いので使わないローカルの Python は消してしまおうと思ったんですが、いろいろ調べた限り、既存の Python を削除するのはあまり推奨されていないようです。
それでも消したいという意固地な方、下記のような方法でアンインストールできました。
私もインストールしたてで何にも使っていなかった 3.8 の方は消去しました。
また、この時 pip2 freeze
でパッケージを確認してみたら awscli が入っており、古い Python に依存しているのがやっぱり気持ち悪かったので一度アンインストールし、Python個別のインストールの不要なAWS CLI バージョン2を入れ直しました。
$ pip uninstall awscli $ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" $ sudo installer -pkg AWSCLIV2.pkg -target / $ rm AWSCLIV2.pkg
これを機に各種バージョンなど見直してはいかがでしょう。
参考
- pyenv/pyenv: Simple Python version management
- Troubleshooting/FAQ · pyenv/pyenv Wiki
- Common build problems · pyenv/pyenv Wiki
- MacでPythonの2.xと3.xを共存させるためにpyenvを入れた時の話し - Qiita
- homebrew : Python3 をアンインストールして pyenv からインストールし直す
以上です!Schönen Abend!